When speech signals are transmitted in a packet communication system typified by Internet communication, a mobile communication system, or the like, compression and coding techniques are used to improve the speech signal transmission efficiency. Many speech coding methods have been developed to date, and many low bit rate speech coding methods developed in recent years, such as CELP, separate a speech signal into spectrum envelope information and spectrum detailed structure information, and perform compression and coding of the separated information.
In a CELP speech coding apparatus, synthetic speech vectors are calculated for all combinations of adaptive code vectors stored by an adaptive codebook and fixed code vectors stored by a stochastic codebook, distance calculation is performed for each synthetic speech and input speech signal, and the adaptive code vector index and fixed code vector index for which the distance is smallest are found.
One known stochastic codebook is an algebraic codebook. This codebook enables a stochastic codebook search to be performed with a comparatively small amount of calculation, and has consequently been widely used in CELP in recent years.
An excitation vector of an algebraic codebook is composed of a small number of pulses with an amplitude of 1 and polarities (+, −), and the pulses (in this case, excitation vector waveform candidates) are positioned so as not to overlap each other.
For example, when the subframe length is 32 and the number of pulses (=number of channels) is 4, the number of pulses per channel is 32/4=8, and the channel 0 pulse positions ici0[i0], channel 1 pulse positions ici1[i1], channel 2 pulse positions ici2[i2], and channel 3 pulse positions ici3[i3] are as shown below. Here, i0, i1, i2, and i3 denote indexes of the respective channels.                ici0[i0]={0, 4, 8, 12, 16, 20, 24, 28}        ici1[i1]={1, 5, 9, 13, 17, 21, 25, 29}        ici2[i2]={2, 6, 10, 14, 18, 22, 26, 30}        ici3[i3]={3, 7, 11, 15, 19, 23, 27, 31}        
A conventional stochastic codebook codes the pulse positions of each channel independently, and takes codes combining these with polarity codes as stochastic excitation vector codes.
For example, in the above case of a subframe length of 32 and 4 channels, a conventional codebook 103 represents a pulse position of each channel as 3 bits, and together with the polarity code, performs coding using a code of (3+1)×4=16 bits.
However, a problem with the above conventional stochastic codebook coding method is that, if the bit rate is low the bits assigned to each channel are also limited, and there are positions where there is no pulse at all, so that variations of an excitation vector waveform corresponding to a code (position information) decrease, and sound quality degradation occurs.
In the above case of a subframe length of 32 and 4 channels, for example, there are positions where there is no pulse at all if coding is performed with fewer than 16 bits.